=== (строгое равенство)

Доступность

Flash Player 6.

Синтаксис

expression1 === expression2

Возвращает

Булевое значение.

Описание

Оператор, проверяет два выражения на равенство, оператор строгого равенства (===) выполняет ту же самую функцию, что и оператор равенства (==) , за исключением того, что типы данных не конвертированы. (Для дополнительной информации, смотрите "Автоматическое приведение типов данных" в Использовании ActionScript во Флэш .) Если оба выражения равны, включая равенство их типов данных, то результат будет true.

Определение эквивалентности зависит от сравниваемых типов данных :

Для дополнительной информации, смотрите "Старшинство и ассоциативность операторов" в Использовании ActionScript во Флэш .

Пример

Комментарии в следующем примере объясняют возвращенное значение операций, которые используют операторы равенства, строгого равенства и строгого неравенства:

// Оба оператора возвращают true потому, что конвертация не требуется
var string1:String = "5";
var string2:String = "5";
trace(string1 == string2); // true
trace(string1 === string2); // true

// Автоматическое приведение данных, в этом примере, конвертирует 5 в “5”
var string1:String = "5";
var num:Number = 5;
trace(string1 == num);  // true
trace(string1 === num);  // false

// Автоматическое приведение данных, в этом примере, конвертирует true в “1”
var string1:String = "1";
var bool1:Boolean = true;
trace(string1 == bool1);  // true
trace(string1 === bool1);  // false

// Автоматическое приведение данных, в этом примере, конвертирует false в “0”
var string1:String = "0";
var bool2:Boolean = false;
trace(string1 == bool2);  // true
trace(string1 === bool2);  // false

Следующие примеры показывают, что строгое равенство сравнивает переменные, которые являются ссылками иначе, чем переменные с литеральным значением. По этой причине, при создании строк, имеет смысл использовать строковые литералы, вместо применения оператора new с классом String.

/ Создаётся строковая переменная, имеющая литеральное значение
var str:String = "asdf”;

// Создаётся переменная, которая является ссылкой
var stringRef:String = new String("asdf");

// Оператор равенства не различает литералы, переменные
// и ссылки
trace(stringRef == "asdf"); // true
trace(stringRef == str); // true
trace("asdf" == str); // true

// Оператор (===)сравнивает переменные, 
// которые являются ссылками 
// иначе, чем переменные с литеральным значением
trace(stringRef === "asdf"); // false 
trace(stringRef === str); // false

См.также

! (логическое НЕТ), != (неравенство), !== (строгое неравенство), && (логическое И), || (логическое ИЛИ), == (равенство)